
package com.treasure.service.user.service;

import com.treasure.service.domain.TUserInfo;
import com.treasure.service.dto.PrepareResult;
import com.treasure.service.dto.TUserInfoDto;
import com.treasure.service.result.ResponseResult;

import java.io.UnsupportedEncodingException;

/**
 * @author <a href="mailto:19919866605@163.com">Pan Xinwen</a>
 * @version 1.0 2018年5月29日 上午10:17:44
 */
public interface UserInfoService {

    /**
     * 创建用户
     * @param user
     * @return
     */
	public int add(TUserInfo user);

    /**
     * 通过参数获取用户信息(只能查询到一个，如果可能查询出多个请不要使用)
     * @param
     * @return
     */
    public TUserInfoDto getUserInfo(TUserInfo user);

    /**
     * Todo 通过用户id查询用户信息
     * @param
     * @return
     */
    public TUserInfo getUserInfoByUserId(Long userId);

    /**
     * 更新用户信息
     * @param user
     * @return
     */
    public TUserInfoDto updateUserInfo(TUserInfo user);

    /**
     * 开通会员预支付
     * @param userId
     */
    public PrepareResult dredgeMember(Long userId,Integer memberGrade, Long couponId, Integer payType,String clientIp);

    /**
     * 开通会员支付回调结果处理
     * @param bizId
     * @param status
     */
    public void dredgeMemberCallBack(Long bizId,Long userId, Integer status);

    /**
     * 建立绑定关系
     * @param openId
     * @param inviteCode
     */
    public void bindingRelation(String openId, String inviteCode) throws UnsupportedEncodingException;

    /**
     * Todo 用户财富值维护
     * @param price
     * @param type
     * @param userId
     */
    public void statisticsIntegral(Long price,Long userId,Integer... type);

    /**
     * Todo 绑定手机号
     * @param phonenumber
     * @param userId
     */
    public TUserInfo bindingPhonenumber(String phonenumber, Long userId);

    /**
     * Todo 完善用户信息
     * @param user
     * @return
     */
    public ResponseResult perfectInfo(TUserInfo user);

    /**
     * Todo 移除用户
     * @param userId
     */
    public void removeUserInfo(Long userId);
}
